Completed
Push — master ( e30bf0...950413 )
by refat
06:26
created

gulpfile.js ➔ style   A

Complexity

Conditions 2

Size

Total Lines 7
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
const gulp = require('gulp');
2
const { series } = require('gulp');
3
const toSass = require('gulp-sass');
4
const autoprefixer = require('gulp-autoprefixer');
5
const imagemin = require('gulp-imagemin');
6
const sourcemaps = require('gulp-sourcemaps');
7
const uglify = require('gulp-uglify');
8
const babel = require('gulp-babel');
9
const browserSync = require('browser-sync').create();
10
const reload = browserSync.reload;
11
12
const sass = `sass/`;
13
const es6 = `es6/`;
14
const images = 'images/';
15
const css = `public/css/`;
16
const js = `public/js/`;
17
const img = 'public/img/';
18
const outInput = [
19
  '',
20
  'admin/',
21
  'admin/pages/',
22
  'website/',
23
  'website/pages/',
24
];
25
const libs = {
26
  'css': [
27
    'node_modules/bootstrap/dist/css/bootstrap.min.css',
28
    'node_modules/@fortawesome/fontawesome-free/css/fontawesome.min.css',
29
    'node_modules/normalize.css/normalize.css',
30
  ],
31
  'js': [
32
    'node_modules/bootstrap/dist/js/bootstrap.min.js',
33
    'node_modules/@fortawesome/fontawesome-free/js/fontawesome.min.js',
34
    'node_modules/jquery/dist/jquery.min.js',
35
  ],
36
  'webfonts': [
37
    'node_modules/@fortawesome/fontawesome-free/webfonts/*'
38
  ]
39
}
40
41
async function styles() {
42
  outInput.map(output => gulp
43
    .src(`${sass}${output}*.scss`)
44
    .pipe(sourcemaps.init({loadMaps: true }))
45
    .pipe(toSass({ outputStyle: 'compressed' }))
46
    .on('error', toSass.logError)
47
    .pipe(autoprefixer('last 2 version'))
48
    .pipe(sourcemaps.write())
49
    .pipe(gulp.dest(`${css}${output}`)));
50
}
51
exports.styles = styles;
52
53
async function scripts() {
54
  outInput.map(output => gulp
55
    .src(`${es6}${output}*.js`)
56
    .pipe(sourcemaps.init({loadMaps: true }))
57
    .pipe(babel(
58
      {
59
        presets: ['@babel/preset-env']
60
      }
61
    ))
62
    .pipe(uglify())
63
    .pipe(sourcemaps.write())
64
    .pipe(gulp.dest(`${js}${output}`)));
65
}
66
exports.scripts = scripts;
67
68
async function imgmin() {
69
  outInput.map(output => !output.includes('pages') ?
70
    gulp
71
      .src(`${images}${output}*`)
72
      .pipe(imagemin())
73
      .pipe(gulp.dest(`${img}${output}`)) : false);
74
}
75
exports.imgmin = imgmin;
76
77
async function libraries() {
78
  for (let lib in libs) {
79
    libs[lib].map(output => gulp
80
        .src(`${output}`)
81
        .pipe(gulp.dest(`public/${lib}/libs`))
82
    );
83
  }
84
}
85
exports.libraries = libraries;
86
87
exports.build = series(styles, scripts, imgmin, libraries);